package UnitTest.DataStructureTest.arrayAndListTest.listTest.listReverseTest;

import DataStructure.arrayAndList.list.Nodelj;
import DataStructure.arrayAndList.list.listReverse.ListSwapPairs;
import org.junit.Test;

/**
 * @author liujun
 * @version 1.0
 * @date 2018-8-18 01:08:11
 * @author-Email ljfirst@mail.ustc.edu.cn
 * @description 两两交换链表中的节点
 * 给你一个链表，两两交换其中相邻的节点，并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题（即，只能进行节点交换）。
 * 输入：head = [1,2,3,4]
 * 输出：[2,1,4,3]
 */

public class ListSwapPairsTest extends ListReverseDate {

    Nodelj node = new Nodelj();

    @Test
    public void testListSwapPairs() {
        test(new ListSwapPairs());
    }

    public void test(ListSwapPairs instance) {
        Nodelj answer = instance.reverse(node.Array2Nodelj(array01));
        assert node.equals(answer, node.Array2Nodelj(array_SwapPairs_01));
        answer = instance.reverse(node.Array2Nodelj(array02));
        assert node.equals(answer, node.Array2Nodelj(array_SwapPairs_02));
        answer = instance.reverse(node.Array2Nodelj(array03));
        assert node.equals(answer, node.Array2Nodelj(array_SwapPairs_03));
        answer = instance.reverse(node.Array2Nodelj(array04));
        assert node.equals(answer, node.Array2Nodelj(array_SwapPairs_04));
        answer = instance.reverse(node.Array2Nodelj(array05));
        assert node.equals(answer, node.Array2Nodelj(array_SwapPairs_05));
        answer = instance.reverse(node.Array2Nodelj(array06));
        assert node.equals(answer, node.Array2Nodelj(array_SwapPairs_06));
        answer = instance.reverse(node.Array2Nodelj(array07));
        assert node.equals(answer, node.Array2Nodelj(array_SwapPairs_07));
        answer = instance.reverse(node.Array2Nodelj(array08));
        assert node.equals(answer, node.Array2Nodelj(array_SwapPairs_08));
        answer = instance.reverse(node.Array2Nodelj(array09));
        assert node.equals(answer, node.Array2Nodelj(array_SwapPairs_09));
        answer = instance.reverse(node.Array2Nodelj(array10));
        assert node.equals(answer, node.Array2Nodelj(array_SwapPairs_10));
        answer = instance.reverse(node.Array2Nodelj(array11));
        assert node.equals(answer, node.Array2Nodelj(array_SwapPairs_11));
        answer = instance.reverse(node.Array2Nodelj(array12));
        assert node.equals(answer, node.Array2Nodelj(array_SwapPairs_12));
        answer = instance.reverse(node.Array2Nodelj(array13));
        assert node.equals(answer, node.Array2Nodelj(array_SwapPairs_13));
        answer = instance.reverse(node.Array2Nodelj(array14));
        assert node.equals(answer, node.Array2Nodelj(array_SwapPairs_14));
    }
}
